// 二次封装axios
// 导入axios包
import axios from 'axios'
// 导入store中的token
import store from '@/store'
// 导入路由组件
import router from '@/router'
// 使用axios创建一个axios实例对象
const service = axios.create({
  // baseURl 基地址
  baseURL: '/api',
  // 超过响应时间
  timeout: 5000
})
// 请求拦截器
service.interceptors.request.use(config => {
  const token = store.state.user.token
  if (token) {
    config.headers['Authorization'] = `Bearer ${token}`
  }
  // 请求成功所返回的数据
  return config
}, error => {
  return Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(response => {
  // 响应成功所返回的数据
  const code = !response.data.code == '20001'
  if (code) {
    return Promise.reject(new Error('响应信息有错误'))
  }
  // 解构一层数据
  return response.data
}, error => {
  // 手动让token失效
  if (error.response.status == '404') {
    // 删除用户信息和token
    store.dispatch('user/DelLogin')
    // 返回登录页
    router.push('/login')
    return Promise.reject(new Error('token失效'))
  }
  return Promise.reject(error)
})
// 导出文件
export default service